PrintStuff àÛç¸ÉãÅ[Év void PrintStuff () { GrafPtr oldPort; short copies, firstPage, lastPage, numberOfCopies, printmgrsResFile, realNumberOfPagesinDoc, pageNumber, PrintError; THPrint thePrRecHdl; TPPrPort thePrPort; TPrStatus theStatus; GetPort(&oldPort); thePrRecHdl = (THPrint) NewHandle (sizeof (TPrint)); /** Memory Manager Ç™ÉvÉäÉìÉgÉåÉRÅ[ÉhÉnÉìÉhÉãÇäÑÇËìñǃÇΩÇΔÇ´Ç… ÉGÉâÅ[ÇãNDZǵǃǢǻǢDZÇΔÅAÇ≥ÇÁÇ… Memory Manager Ç™ nil ÉnÉì ÉhÉãÇìnǵǃǢǻǢDZÇΔÇämîFÇ∑ÇÈ **/ if (thePrRecHdl != NULL && MemError() == noErr) { PrOpen(); if (PrError() == noErr) { /** åªç›ÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉã (ǬNjÇËÅAÉvÉäÉìÉ^ÉhÉâÉCÉoÇÃ) Çï€ë∂ǵǃÅA pIdleProc Ç©ÇÁêßå‰Ç™ñflÇ≥ÇÍÇΩÇΔÇ´Ç…ÉhÉâÉCÉoÇÃÉäÉ\Å[ÉXÇ™é∏ÇÌÇÍǻǢÇÊǧDžÇ∑ÇÈ **/ printmgrsResFile = CurResFile(); PrintDefault(thePrRecHdl); if (PrError() == noErr) { if (PrJobDialog(thePrRecHdl)) { /** DetermineNumberOfPagesinDoc Ç≈ÇÕÅAèëófiÇÃÉTÉCÉYÇΔ TPrInfo ÉåÉRÅ[ÉhÇà rPage Çî‰ärǵǃÅAèëófiÇ…ä‹Ç‹ÇÍÇÈ ÉyÅ[ÉWêîÇåàíËÇ∑ÇÈ (Inside Macintosh: Imaging With QuickDraw p.9-46)ÅBåªç›ëIëǵǃǢÇÈÉvÉäÉìÉ^Ç≈èëófiÇ àÛç¸Ç∑ÇÈÇΩÇflÇ…ïKóvÇ»ÉyÅ[ÉWêîÇ™ï‘Ç≥ÇÍÇÈ **/ realNumberOfPagesinDoc = DetermineNumberOfPagesinDoc ((**thePrRecHdl).prInfo.rPage); if (PrJobDialog(thePrRecHdl)) { /** TPrJob ÉåÉRÅ[ÉhÇà iCopies Ç©ÇÁÅAÉÜÅ[ÉUÇ™éwíËǵÇΩ èëófiÇÃïîêîÇéÊìæÇ∑ÇÈ (Inside Macintosh: Imaging With QuickDraw p.9-47) **/ numberOfCopies = (**thePrRecHdl).prJob.iCopies; /** TPrJob ÉåÉRÅ[ÉhÇà FstPage ÇΔ iLastPage Ç©ÇÁÅA ÉÜÅ[ÉUÇ™àÛç¸ÇéwíËǵÇΩèëófiÇÃêÊì™ÉyÅ[ÉWÇΔ ññîˆÉyÅ[ÉWÇéÊìæÇ∑ÇÈ (Inside Macintosh: Imaging With QuickDraw p.9-47) **/ firstPage = (**thePrRecHdl).prJob.iFstPage; lastPage = (**thePrRecHdl).prJob.iLstPage; /** àÛç¸ÉãÅ[ÉvÇ≈ "Ç∑Ç◊ǃ" ÇÃÉyÅ[ÉWÇàÛç¸Ç∑ÇÈ **/ (**thePrRecHdl).prJob.iFstPage = 1; (**thePrRecHdl).prJob.iLstPage = 9999; /** èëófiÇ…ä‹Ç‹ÇÍǃǢÇÈ "åªé¿" ÇÃÉyÅ[ÉWêîÇåàíËÇ∑ÇÈÅB DZÇÃÉeÉXÉgÇçsÇÌǻǢÇΔÅA9999 ÉyÅ[ÉWÇàÛç¸Ç∑ÇÈDZÇΔ Ç…Ç»Ç¡ÇƒÇµÇ‹Ç§ **/ if (realNumberOfPagesinDoc < lastPage) lastPage = realNumberOfPagesinDoc; PrintingStatusDialog = GetNewDialog(rPrintingDialogID, nil, (WindowPtr) -1); /** "Print Job" É_ÉCÉAÉçÉOÇ≈ÉÜÅ[ÉUÇ™éwíËǵÇΩèëófiÇÃïîêîÇ àÛç¸Ç∑ÇÈ **/ for (copies = 1; copies <= numberOfCopies; copies++) { /** MyPrint ÉåÉRÅ[ÉhÇà pIdleProc Ç÷ÇÃÉ|ÉCÉìÉ^Ç ÉCÉìÉXÉgÅ[ÉãÇ∑ÇÈ **/ (**thePrRecHdl).prJob.pIdleProc = checkMyPrintDialogButton(); /** ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇÉvÉäÉìÉ^ÉhÉâÉCÉoÇ…ÉäÉXÉgÉAÇ∑ÇÈ **/ UseResFile(printmgrsResFile); thePrPort = PrOpenDoc(thePrRecHdl, nil, nil); if (PrError() == noErr) { /** "Print Job" É_ÉCÉAÉçÉOÇ≈ÉÜÅ[ÉUÇ™éwíËǵÇΩèëófiÇà ÉyÅ[ÉWîÕàÕÇàÛç¸Ç∑ÇÈ **/ pageNumber = firstPage; while (pageNumber <= lastPage && PrError() == noErr) { /** 128 ÉyÅ[ÉWÇÃã´äEÇâzǶÇΩèÍçáÇÕÅA åªç›ÇÃÉvÉäÉìÉgÉtÉ@ÉCÉãÇÉNÉçÅ[ÉYǵ ïKóvÇ»èÍçáÇÕǪÇÍÇÉvÉäÉìÉ^Ç…ëóêMǵǃǩÇÁÅA êVǵǢèëófiÇÉIÅ[ÉvÉìÇ∑ÇÈ **/ if ((pageNumber - firstPage) % iPFMaxPgs == 0) { if (pageNumber != firstPage) { PrCloseDoc(thePrPort); if (((**thePrRecHdl).prJob.bJDocLoop == bSpoolLoop) && (PrError() == noErr)) PrPicFile(thePrRecHdl, nil, nil, nil, &theStatus); thePrPort = PrOpenDoc(thePrRecHdl, nil, nil); } } PrOpenPage(thePrPort, nil); if (PrError() == noErr) { /** rPage (Inside Macintosh: Imaging With QuickDraw p.9-46) ÇÕÅAåªç›ëIëǵǃǢÇÈ ÉvÉäÉìÉ^ÇÃàÛç¸â¬î\óÃàÊÇï\Ç∑ÅBåªç›ÇÃÉ|Å[ÉgÇ ï`âÊÉãÅ[É`ÉìÇ…ìnÇ∑DZÇΔÇ≈ÅAÉAÉvÉäÉPÅ[ ÉVÉáÉìÇ™ìØÇ∂ÉãÅ[É`ÉìÇégǡǃÉXÉNÉäÅ[Éì ÇΔÉvÉäÉìÉ^Çà GrafPort Çï`âÊÇ≈Ç´ÇÈÇÊǧDž Ç»ÇÈ **/ DrawStuff ((**thePrRecHdl).prInfo.rPage, (GrafPtr) thePrPort, pageNumber); } PrClosePage(thePrPort); pageNumber++; } /** pageNumber ÉãÅ[ÉvÇÃèIÇÌÇË **/ } PrCloseDoc(thePrPort); } /** ïîêîÉãÅ[ÉvÇÃèIÇÌÇË **/ } /** àÛç¸ÉWÉáÉuÇÕÅA"Print Style" Ç‹ÇΩÇÕ "Print Job" É_ÉCÉAÉçÉO Ç≈ÉÜÅ[ÉUÇ…ÇÊǡǃÉLÉÉÉìÉZÉãÇ≥ÇÍǃǢÇÈÅBPrError Ç™ PrAbort Ç…ÉZÉbÉgÇ≥ÇÍÅAPrint Manager Ç…åªç›ÇÃàÛç¸ÉWÉáÉuÇ™íÜé~Ç≥ÇÍÇΩ Ç±ÇΔÇ™í ímÇ≥ÇÍÇÈ **/ else PrSetError (iPrAbort); /** "Job" É_ÉCÉAÉçÉOÇ©ÇÁÇÃÉLÉÉÉìÉZÉã **/ } else PrSetError (iPrAbort); /** "Style" É_ÉCÉAÉçÉOÇ©ÇÁÇÃÉLÉÉÉìÉZÉã **/ } } if (((**thePrRecHdl).prJob.bJDocLoop == bSpoolLoop) && (PrError() == noErr)) PrPicFile(thePrRecHdl, nil, nil, nil, &theStatus); /** àÛç¸ÉGÉâÅ[Çâ°éÊÇËÇ∑ÇÈ -- Printing Manager Ç ÉNÉçÅ[ÉYÇ∑ÇÈÇΔÅAPrError ÇÕóLå¯Ç»åãâ Çï‘Ç≥Ç»Ç≠Ç»ÇÈ **/ PrintError = PrError(); PrClose(); /** àÛç¸ÉãÅ[ÉvÇ™é∏îsÇ…èIÇÌÇÈÇ‹Ç≈ÅAàÛç¸ÉGÉâÅ[ÇÃÉåÉ|Å[ÉgÇÕçsÇÌǻǢÅB DZÇÍÇ…ÇÊÇËÅAPrint Manager ÇÃÇ∑Ç◊ǃÇÃÉIÅ[ÉvÉìåƒÇ—èoǵǙ ëŒâûÇ∑ÇÈÉNÉçÅ[ÉYåƒÇ—èoǵÇéùǬDZÇΔÇ…Ç»ÇËÅAǪÇÃåãâ ÅAPrint Manager ÇìKêÿÇ…ÉNÉçÅ[ÉYǵǃÅAÇ∑Ç◊ǃÇÃàÍéûìIÇ»ÉÅÉÇÉääÑÇËìñÇƒÇ âï˙Ç∑ÇÈDZÇΔÇ™â¬î\Ç…Ç»ÇÈ **/ if (PrintError != noErr) PostPrintingErrors (PrintError); } if (thePrRecHdl != NULL) DisposeHandle((Handle) thePrRecHdl); if (PrintingStatusDialog != NULL) DisposeDialog(PrintingStatusDialog); SetPort(oldPort); } /** PrintStuff **/ |